home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / utils / sysmon.arc / SYS_MON.TXT < prev   
Text File  |  1990-10-16  |  68KB  |  1,670 lines

  1.        ⌠ SysMon the ATARI-ST SystemMonitor Version 1.0.5 ⌠
  2.        |-------------------------------------------------|
  3.        ⌡    Copyright (C) by Karsten Isakovic, Berlin    ⌡
  4.  
  5.                     a ShareWare program by
  6.  
  7.                         Karsten Isakovic
  8.                       WilmersdorferStr 82
  9.                          D-1000 Berlin 12
  10.                             Germany
  11.  
  12. Preface-1:
  13.  
  14. This is the english manual. I have no problems in reading english
  15. or listening to english speaking people, but my writing is bad.
  16. I don't have enough word and problems with the grammar, so please
  17. forgive me.
  18.  
  19. Preface-2:
  20.  
  21. Now i am ready with the manual, it was a hard work for me.  I did
  22. the translation in two days and did not reread the text. (I have
  23. no time...). There will be plenty errors. But i think a manual in
  24. bad english is better than no manual.
  25. If you send me a corrected version of this manual, you will be a
  26. registred user and recieve automatical updates !
  27.  
  28.  
  29.  
  30.         TABLE OF CONTENTS
  31. ===================================================
  32. 1.    Installation
  33. ---------------------------------------------------
  34. 1.1     Supported hardware
  35. 1.2     Supported TOS-versions
  36. 1.3     How to start SysMon
  37.  
  38. 2.    General usage
  39. ---------------------------------------------------
  40. 2.1     The menubar
  41. 2.2     The keyboard layout
  42. 2.3     Function lists
  43. 2.4     Hiding function calls
  44. 2.5     The modes of SysMon
  45. 2.6     The STEP-menu
  46. 2.7     How to toggle the screens
  47. 2.8     Setups
  48. 2.9     Scrolling in the tracer output
  49.  
  50. 3.    The SysMon menu
  51. ---------------------------------------------------
  52. 3.1     Quick overview
  53. 3.2     C - Configuration
  54. 3.3     P - Programs
  55. 3.4     M - Memory
  56. 3.5     T - Traps
  57. 3.6     O - OS vars
  58. 3.7     D - Display
  59. 3.8     F - proFile
  60. 3.9     U - Used traps
  61. 3.10    N - Notepad
  62. 3.11    W - Write
  63. 3.12    R - ReRead
  64. 3.13    Q - Quit
  65.  
  66. 4.    The output of the tracer
  67. ---------------------------------------------------
  68. 4.1     The tracer line
  69. 4.2     Examples of output
  70. 4.3     The protocoll file
  71.  
  72. 5.    Special features
  73. ---------------------------------------------------
  74. 5.1     AES
  75. 5.2     VDI
  76. 5.3     GEMDOS
  77. 5.4     BIOS
  78. 5.5     XBIOS
  79. 5.6     LINE_A
  80. 5.7     Setup-dependent tracing
  81.  
  82. 6.    The traps
  83. ---------------------------------------------------
  84. 6.1     SysMon traps
  85. 6.2     The SysTable
  86. 6.3     Extended bypass functions
  87. 6.4     PD- and Trap-changes
  88.  
  89. 7.    Sample sessions
  90. ---------------------------------------------------
  91. 7.1     Stepwise booting
  92. 7.2     Tracing of a single AES-call
  93. 7.3     Tracing of a DA-protocoll
  94. 7.4     Tracing of a program
  95. 7.5     Detect errors/mysteries in the system
  96.  
  97. 8.    Extended information
  98. ---------------------------------------------------
  99. 8.1     Patch variables
  100. 8.2     Auto patch sequence
  101. 8.3     Special adaptions
  102. 8.3.1   Color screens
  103. 8.3.2     Big screens
  104. 8.3.3     OverScan
  105. 8.3.4     STE
  106. 8.3.5     TT
  107. 8.3.6     68000-68030
  108. 8.3.7     External keyboards
  109. 8.4     Interna
  110. 8.5     Bugs / Features
  111. 8.6     Extensions
  112.  
  113. 9.    Shareware conditions
  114. ---------------------------------------------------
  115.  
  116.         10. Contact
  117. ---------------------------------------------------
  118. 10.1    Via snail mail
  119. 10.2    Via electronic mail
  120.  
  121.  
  122.  
  123.  
  124.  
  125.         1.Installation
  126. ===================================================
  127.  
  128.    1.1 Supported hardware
  129. -------------------------
  130. SysMon runs in both color- and mono-mode. It uses own routines to
  131. output on a 2.screen.
  132.  
  133. Not only the standard resolutions are supported, but also some big
  134. screen monitors. (Huups, i don't know the word). On such monitors
  135. the output of SysMon appears on the SM124, which must be installed
  136. as second-monitor.
  137.  
  138. My own OverScan expansionis also supported. (BTW: We have build a
  139. new hardware, called AutoSwitch-OverScan. It has the same specs as
  140. OverScan, but it can automaticly switch between the normal and
  141. enhanced screen mode. Running incompatible programms is no longer
  142. a problem, they simply use the old resolution)
  143.  
  144. You can redirect the debugging in/output to the modem-, printer-
  145. or midi-port. Protocollfiles are also supported.
  146.  
  147. See also chapter 8.3 'Special features'
  148.  
  149.    1.2 Supported TOS-versions
  150. -----------------------------
  151. SysMon should work with all TOS-versions. If you start on an unknown
  152. TOS-version, SysMon starts to search the unknown system variables. See
  153. chapter 8.2 'The AutoPatch sequence'
  154.  
  155.           Kind | version |  date    | remark
  156.           -----+---------+-----------------------------
  157.           ROM  |  3.1    | 09.08.90 | TT-Tos
  158.           ROM  |  3.0    | 23.05.89 | TT-Tos
  159.           ROM  |  1.6    | 29.07.89 | Ste-Tos
  160.           ROM  |  1.4    | 06.04.89 | rainbow-Tos
  161.           ROM  |  1.4    | 22.02.89 |
  162.           RAM  |  1.4    | 06.04.89 | relocated Rom-Tos
  163.           RAM  |  1.4    | 18.05.88 | Beta-Tos
  164.           RAM  |  1.4    | 22.02.88 |
  165.           ROM  |  1.2    | 22.04.87 | BlitterTos
  166.           RAM  |  1.2    | 22.04.87 | KAOS-Tos
  167.           ROM  |  1.0    | 06.02.86 |
  168.           RAM  |  1.0    | 06.02.86 |
  169.           RAM  |  1.0    | 20.11.85 |
  170.           RAM  |  1.0    | 29.05.85 | Mushroom-Tos
  171.  
  172.              table -1- known TOS-versions
  173.  
  174.    1.3 How to start SysMon
  175. --------------------------
  176. You can start SysMon in the auto-folder or from the desktop. It
  177. uses 120 KB for code and 80 KB as data space.
  178. You enter SysMon by pressing the combination right-shift-help. You
  179. leave SysMon by pressing SPACE or with the menu item Quit in the
  180. SysMon menu.
  181.  
  182. If you hold the alternate key while starting SysMon, the installation
  183. is aborted. If you hold the control key while starting, the Sys_Mon.Inf
  184. file is not loaded.
  185.  
  186. Is the system is making a disc access, you normaly can't enter SysMon,
  187. because there would be timing problems with the DMA chip. SysMon tests
  188. the system variable 'flock'. Some programs set this variable permanently
  189. (FCOPY3 while scanning/copying/formating discs). This 'flock' test is
  190. skipped, if you press the right-shift-help and caps-lock keys.
  191.  
  192.         2. General usage
  193. ===================================================
  194.  
  195.    2.1 The menubar
  196. ------------------
  197. The actual status of SysMon is shown by the capitalization of the
  198. menu items.
  199.  
  200. - The item SysMon is capitalized if tracing is enabled. If it is
  201.   not capitalized, all other settings are ignored.
  202. - The menu items AES, VDI, GEMDOS, BIOS, XBIOS and LINE_A are the
  203.   possible groups of system calls. Only if the item is capitalized
  204.   the calls of a function of this group are shown.
  205. - On the right hand you can see the number and name of the active
  206.   setup. See chapter 3.2 'Configuration'
  207. - The global trace mode of SysMon appears on the right side in the
  208.   second line. See chpter 2.5 'The modes of SysMon'
  209.  
  210. All 'extra' functions of sysmon are located in the sysmon menu.
  211.  
  212.    2.2 The keyboard layout
  213. --------------------------
  214. SysMon is completly key driven. The menu items are selected by pressing
  215. its first letter or by walking with the cursor keys and the return key.
  216.  
  217. SysMon has a simple window system. In a window, the active line is shown
  218. by an inverted bar. Each window has an individual cursor, if you enter
  219. the window a second time, the cursor appears, where it was bevor.
  220.  
  221. You move the cursor with the cursor keys (You didn't expect that ? Did you ?)
  222. With the shift key, you move pagewise.
  223.  
  224.           additon |  key       | remark
  225.         ----------+------------+-----------------------------
  226.                   | left/right | change menu
  227.                   | up  /down  | single step up/down
  228.           shift   | up  /down  | pagewise up/down
  229.           control | up  /down  | select block
  230.                   | Home       | beginning
  231.           shift   | Home       | end
  232.  
  233.                   table -2- movement commandos
  234.  
  235. In a function list you can modify the status of the functions with
  236. the keys of table -5-. If you select a block by holding the control
  237. key while walking with the cursor keys, you can modify the status of
  238. all selected functions.
  239.  
  240. In some windows you can toggle the kind of display or suppress
  241. unwanted information. In the upper right edge of such windows, all
  242. valid toggle keys are listed. An option is selected, if the matching
  243. key is capitalized. In table -3- lists other valid commands in option
  244. windows.
  245.  
  246.          addition|   key   | remark
  247.         ---------+---------+-----------------------------
  248.          Control | Up/Down | jump to next block
  249.                  | Delete  | set all options
  250.                  | Insert  | clear all options
  251.  
  252.             table -3- Option commands
  253.  
  254. The extendes command-keys of table -4- are valid in all windows or
  255. menus. These commands consist of holding down the control key and
  256. the first letter of the function.
  257.  
  258.            Key   |
  259.         ---------+--------- globale setup
  260.            ESC   | Tracer global on/off
  261.            TAB   | Tracer mode
  262.          F1--F10 | Setup
  263.         ---------+--------- Toggle function groups
  264.            ^A    | AES
  265.            ^V    | VDI
  266.            ^G    | GEMDOS
  267.            ^B    | BIOS
  268.            ^X    | XBIOS
  269.            ^L    | LINE_A
  270.         ---------+--------- organisiation of the tracer-output
  271.            ^R    | Return address
  272.            ^C    | Caller name
  273.            ^N    | Number of function
  274.            ^O    | Output stack pointer
  275.            ^F    | Flag supervisor mode
  276.            ^E    | Extra output
  277.            ^W    | Watch bypass
  278.         ---------+--------- Additional tracer-output
  279.            ^P    | PD-changes
  280.            ^T    | Trap-changes
  281.         ---------+--------- Misc
  282.            Undo  | close window
  283.            Help  | help window
  284.            ^Z    | Zap (clear screen)
  285.            *     | dump window to protocoll file
  286.           sh-Help | enter debugger (TEMPLEMON/BUGABOO)
  287.  
  288.        table -4- global keys
  289.  
  290. THE IMPORTANT KEY OF SYSMON ARE:
  291. - Every window is closed with UNDO
  292. - You leave SysMon with SPACE, when no window is open.
  293.  
  294.    2.3 Function lists
  295. ---------------------
  296. Inside the menu items AES to LINE_A, the list of sub functions
  297. is shown. The output of each function is toggled with the keys
  298. listed in table -5-. If a functions has the mode 'space', it
  299. will not occour in the tracer output.
  300.  
  301.            Key    | display | remark
  302.           --------+---------+-------------------------
  303.            Delete | space   | don't trace
  304.            Insert | plus    | trace
  305.            Tilde  | circle  | breakpoint
  306.           --------+---------+-------------------------
  307.            0..9   | 0..9    | setup-mode
  308.            D      | D       | debugger-mode
  309.            *      | *       | all-mode
  310.  
  311.             table -5- SysMon commands
  312.  
  313. - don't trace    This means, that no call to this function is output.
  314. - trace          All calls to this function are output, if the programm
  315.                  that made the call is also selected in the programms-
  316.                  window.
  317. - breakpoint     In WAIT-mode the SysMon is entered after a call to
  318.                  this function. (Only if calling program is also selected)
  319. - setup-mode     A call to this function is output, if the programm that
  320.                  made the call is selected in the specified setup. See
  321.                  chapter 5.7 'SysMon setups'
  322. - debugger-mode  After a call to this function, SysMon enters the Debugger
  323.                  this currently works only with the TempleMon-Debugger
  324.                  by T.Tempelmann and J.Hill.
  325. - all-mode       A call to this function is also output, if the calling
  326.                  programm is not selected in the programs menu.
  327.  
  328.    2.4 Hiding function calls
  329. ----------------------------
  330. You can hide the output of calls to functions in 4 levels.
  331.  
  332. - The highest level is to toggle to global mode of SysMon on/off with
  333.   the ESC-key.
  334. - The next layer is the selection of programms that will produce
  335.   output. This is set up in the SysMon/Programs window. See Chapter 3.3
  336. - The next level is the selection of functiongroups, that are trace. This
  337.   is done with the global keys ^A--^L.
  338. - The last level is the selection of functions, that are traced.
  339.  
  340.    2.5 The modes of SysMon
  341. --------------------------
  342. SysMon offers 4 trace-modes:
  343.  
  344. - RUN   All functions are traced and output without stop.
  345. - STEP  In this mode SysMon stops after every selected function and
  346.         enters the STEP-menu. See chapter 2.6
  347. - WAIT  This mode produces no output. If a function with the breakpoint-
  348.         mode is reached and done (ie after the function), the SysMon-
  349.         menu is entered.
  350. - HALT  After the next function call, the SysMon-menu is entered. The
  351.         mode of the functions does not matter. But: if the function is
  352.         not traced, SysMon will not stop.
  353.  
  354.    2.6 The STEP-menu
  355. --------------------
  356. When tracing in STEP-mode, SysMon stops after every function that
  357. produces output and waits for input.
  358.  
  359.  
  360. M - menu  enters the SysMon-menu. When you leave the SysMon-menu with
  361.           SPACE, you are back in the STEP-menu.
  362. 0--9      chooses the active setup. You can also use the function keys
  363.           F1--F10. The keys 0--9 are needed, because not all input
  364.           devices have functions keys.
  365. All commands from table -4- are supported in the STEP-menu. All other
  366. keys leave the STEP-menu.
  367.  
  368. In the SysMon/Display window you can set up a STEP-filter. This value
  369. says how many lines to output without stopping in the STEP-menu.
  370.  
  371.    2.7 How to toggle the screens
  372. --------------------------------
  373. SysMon outputs in a 2.screenpage. If you enter SysMon this page
  374. is displayed. If global tracing is enabled, you can show the
  375. second screen, by holding down the right shift-key. If tracing
  376. is disabed, the right shift-key does not work.
  377.  
  378. You can change the mainly displayed screen by pressing the right
  379. shift-key and Caps-lock. If toggled, the original screen will show
  380. when pressing the right shift-key.
  381.  
  382. On color-monitors, SysMon uses mid-res on it's own screen. The color-
  383. palette is corrected.
  384.  
  385. If you use AutoSwitch-OverScan, SysMon uses the mode that was active
  386. at the startup of Sysmon.
  387.  
  388. On a color-monitor with AutoSwitch-OverScan, the pressing of the
  389. right shift-key could (in the hardest case) change AutoSwitch-mode,
  390. resolution and color-table!
  391.  
  392. In some cases, the output of SysMon is to quick to read (Look at the
  393. TT and you see what i mean). In the SysMon/Display window is a
  394. variable called 'Pause'. In Pause-mode the output stops, while watching
  395. the SysMon-screen, the other modes wait for a little amount of time
  396. (In msecs).
  397.  
  398.    2.8 Setups
  399. -------------
  400. SysMon offers 10 setups, which are selected with the function keys
  401. F1--F10. Nearly every setting in SysMon is setup-dependent. By
  402. switching the setup you can change to a complete 'other' SysMon.
  403. You can build a setup for every case of work you have to do with
  404. Sysmon and save it. Later if you need it, you can use the saved
  405. setup.
  406.  
  407. The following things are toggled:
  408.  
  409. - state of programms
  410. - state of function groups
  411. - state of functions
  412. - trace-mode
  413. - configuration of the tracer-output
  414.  
  415.    2.9 Scrolling in the tracer output
  416. -------------------------------------
  417. When no window is open, you can walk back in the tracer output with
  418. the cursor up/down key. By default additional 50 lines are buffered,
  419. you can change this with the patch variabes. See chapter 8.1
  420.  
  421.         3. The SysMon menu
  422. ===================================================
  423.  
  424.    3.1 Quick overview
  425. ---------------------
  426. Under the SysMon menu item you find a list of sub menues. You select
  427. these by pressing the first letter or by walking with the cursor and
  428. pressing RETURN.
  429.  
  430. C - Configuration Shows/configures all 10 setups
  431. P - Programs      List of all loaded programs
  432. M - Memory        List of all memory blocks
  433. T - Traps         List of all system vectors
  434. O - OS Vars.      List of all system variables
  435. D - Display       Everything for input/output
  436. F - proFile       Everything for the profiling functions
  437. U - Used Traps    List of active SysMon-traps and hooked functions
  438. N - Notepad       Enter comments into the protocoll file
  439. R - ReRead        ReRead the Sys_Mon.Inf setup file
  440. W - Write         Write  the Sys_Mon.Inf setup file
  441. Q - Quit          Unhook SysMon form the system
  442.  
  443.  
  444.    3.2 C - Configuration
  445. ------------------------
  446. The configuration window is an overview for all 10 setups. You can
  447. change the settings with the global keys listed in table -4-.
  448.  
  449. Each line consists of:
  450.  
  451. - Name of the setup. This is editable. Use the backspace key
  452.   to erase unwanted characters.
  453. - The trace mode is output as Run, Step, Wait or Halt.
  454. - The trace mode of each function group is expressed by their
  455.   first keys. AGX means that AES,GEDOS and XBIOS calls are traced.
  456. - The output format of every function is configured in the next
  457.   row. R stands for ReturnAddr, C for Caller, N for Number,
  458.   O for OutputStack, F for FlagSuper, E for Extra and W for WatchBypass.
  459. - The mode of the extra functions (Show PD- or Trap-changes) ist listed
  460.   with the keys P and T.
  461.  
  462. The actual setup is changed with the function keys or with the cursor
  463. keys. Neary every setting of SysMon is setup dependent. See chapter 2.8
  464.  
  465.  
  466.    3.3 P - Programs
  467. --------------------
  468. This is the list of loaded programs. For each program the mode is
  469. selected with the keys of table -5-. The program 'Unknown'
  470. represents the trace mode for calls that come from memory blocks
  471. that are not recognised by SysMon.
  472.  
  473. Each line of the window consists of:
  474.  
  475. - Start/end address of the program
  476. - The name of the program follows following rules
  477.   - The name is capitalized, if it is the real name of the
  478.     program.
  479.   - Names with mixed letters are used, if SysMon knows the program
  480.     because of it's XBRA-ID.
  481.   - The names Acc__A, Auto_A, Prg__A etc. are used, if SysMon does not
  482.     know the name, only the type of program.
  483.   You can edit names with mixed letters. This is shown by the
  484.   <<..>> brackets. You can only enter capitalized letters, to erase
  485.   a character, use the backspace key.
  486.   An empty name is not valid, it is changed to ???
  487. - The trace mode of the program is listed in the next row. This mode
  488.   is modified with the keys in table -5-.
  489. - The program, to which ActPD points, is highlighted with an R-symbol.
  490. - The Appl-ID of the program is output. With Stuffer and other multi-DAs
  491.   it is normal that the same ID is used.
  492. - The VDI-handles are output. This is only possible, if SysMon
  493.   traces the VDI-trap.
  494. - The kind of program is output-
  495.   - TOS   used only for both parts of the system (TOS and GEM)
  496.   - Auto  used for programs that were started in the auto-folder.
  497.           These are  residend loaded.
  498.   - Acc   used for DAs
  499.   - Prg   used for normal programs
  500.   - Res   used for residend loaded programs
  501.   - LPrg  used for programs, when the code-space is not owned by
  502.           the same process. (LoadedProgram)
  503.   - Cart  used for Cartridge programs
  504.  
  505.  
  506.    3.4 M - Memory
  507. -----------------
  508. This window shows a sorted list of memory blocks. Resident memory
  509. blocks are also included. At the top of the list is the end of
  510. memory, the bottom of the list is the start of memory. On the TT
  511. the FastRAM memory is seperated by a dashed line.
  512.  
  513. Each line of the window consist of:
  514. - The address of the memory descriptor
  515. - A fast ram flag on the TT
  516. - The start/end address and size of the memory block
  517. - The owner of the block. Free blocks have no owner, so the owner
  518.   is output as 'free'. Resident blocks are not listed in the memory
  519.   descriptors, they are listed as 'res'.
  520.   The HideMem convention is also recognized: Thus if all 4 bytes of
  521.   the 'owner' longword are valid ASCII characters, these are
  522.   output as an ID.
  523. - If possible, the name of the programm is output
  524. - The following kind of memroy blocks are recognised:
  525.   - program code
  526.   - environments
  527.   - loaded resources
  528.   - AES blocks
  529.   - VDI blocks
  530.   - basepages
  531.   - LineF handler
  532.   - loaded VDI fonts
  533.   - CPX header
  534.   - CPX code  
  535.   - directory buffers of the desktop
  536.   - screen memory
  537.   All others have the status 'Data'. The test is very simple, so
  538.   don't worry if SysMon goes wrong.
  539.  
  540. In this window followibng options are possible:
  541. - L,$  toggle Hex/Dec mode
  542. - O    toggle owner Hex/Name
  543.  
  544. When you press return, the selected memory block is shown in hex dump
  545. mode. This works only if the block is smaller than 524272 Bytes. You
  546. can move the cursor in the hexdump with cursor keys.
  547.  
  548.  
  549.    3.5 T - Traps
  550. ----------------
  551. This is the list of system vectors. SysMon follow XBRA-list und
  552. names the destination.
  553.  
  554. All traps and vectors of the ST and TT are listed, even the ones
  555. that are unused by the system.
  556.  
  557. You can hide some information, bacause the list can be very long.
  558. The following keys toggle the display of
  559.  
  560.   H - Hardware
  561.   U - Unused Exceptions
  562.   I - Interrupt
  563.   T - Trap
  564.   M - MFP
  565.   E - ETV
  566.   S - Special
  567.   V - VBL
  568.   X - Xcon
  569.   K - Kbd
  570.   L - LineA
  571.  
  572. Two special key toggle the display of
  573. R - ROM               All jumps with the destination in the OS
  574. N - NotValid          All jumps with invalid adress
  575.  
  576.  
  577.    3.6 O - OS vars
  578. ------------------
  579. This window lists all variables and structures of the operating
  580. system. Like in the Traps-window , you can hide unwanted information
  581. with some option keys.
  582.  
  583. S - System variables All system variables between $400 and $5A0
  584. N - Negativ LineA    All negative LineA variables
  585. L - LineA            All LineA variables
  586. V - VDI              All data of all VDI-workstations
  587. C - Cookies          All cookies in the CookieJar
  588. P - Programs         For every programm the program header, basepage or
  589.                      cartridge header is output
  590. F - Fonts            All data of every loaded VDI-font
  591. H - Header           The header of the operating system
  592.  
  593. Some vectors, that are shown in the Traps-window, are also listed. The
  594. XBRA-chains are not followed.
  595.  
  596.  
  597.    3.7 D - Display
  598. ------------------
  599. The display window lists all settings which have to do with the
  600. input and output.
  601. Das DISPLAY-Menü enthält alle Einstellungen, die die Ein-/Ausgabe
  602. betreffen. Die Umschaltungen der Ein-/Ausgabe sind erst nach
  603. Verlassen des SysMon Bildschirms gültig. Die einzelen Punkte können
  604. durch Drücken des Anfangsbuchstabens oder durch Wandern mit den
  605. Cursortasten und der Returntaste angewählt werden.
  606.  
  607. I - Input         toggles the input device from keyboard to RS232,
  608.                   paralell port and midi. The change starts operating
  609.                   after leaving the SysMon screen.
  610. O - Output        toggles the ouput device from 2.screen to      RS232,
  611.                   paralell port and midi. The change starts operating
  612.                   after leaving the SysMon screen.
  613. F - File output   toggles the protocollfile on/off. In some cases it
  614.                   is not possible to open/close a file. In this special
  615.                   cases a warning messages appears. See chapter 4.3
  616.                   If the file already exists, a little dialog offers
  617.                   the following choices:
  618.                       overwrite, append or abort
  619. N - Name          This is the name of the protocollfile. You can edit
  620.                   the name, valid keys are letters,numbers, point,
  621.                   colon, underscore and backslash. All others keys
  622.                   end the edit mode.
  623. J - Jump scroll   This value says how many lines are output without
  624.                   scrolling. 10 means, output 10 lines and then scroll
  625.                   up 10 lines.
  626.                   Because the scrollroutine is only called every 10th line,
  627.                   the output speed of SysMon is bigger.
  628.                   Shift-J decrements the number.
  629. S - STEP filter   This value says how many lines are output in STEP mode
  630.                   without stop.
  631. P - Pause on view This toggles the display option. If the pause mode is
  632.                   selected, output stops while viewing the SysMon screen
  633.                   with the right shift key.
  634.                   The other modes (50 ms to 500 ms) sets the delay after
  635.                   each function. If the SysMon screen is not shown, there
  636.                   is no delay.
  637.  
  638.  
  639.    3.8 F - proFile
  640. ------------------
  641. In this window you can toggle the profile options of SysMon. Profiling
  642. means that Sysmon counts every functions call and lists this value in
  643. the function list. Only functions that are traced are counted. With
  644. profiling you get an overview over the mostly called functions of your
  645. program.
  646.  
  647. P - Profile    Toggles the profiling. The profiling data is not cleared,
  648.                this can be used as a break in counting.
  649. D - Dump       All data in written into the protocollfile. If no protocoll
  650.                file is open, it is opened and afterwards closed again.
  651.                Only the selected traps/functions are written to the file.
  652. S - Show func. Toggles the display of functions. The profiling is speeded
  653.                if no output from the function is selected
  654. C - Clear      Clears all profiling data
  655.  
  656.  
  657.    3.9 U - Used traps
  658. --------------------
  659. This window shows an overview off the traps and bypasses SysMon
  660. is hooked into.
  661.  
  662. Each line in the window consists of:
  663. - On the left the precedor, the trap or program that points to the
  664.   SysTable
  665. - In the middle the address of the SysTable
  666. - On the right the successor, the trap or program to which to
  667.   SysTable points
  668. - On the right edge is a short-key that describes the vector
  669.   A/V stand for AesVdi, G for GEMDOS etc.
  670.  
  671. There are two display modes of the BypassTable, which are toggled with
  672. the M key.
  673. - Active traps and bypasses are listed in two tables. The bypasses
  674.   are listed in the order in which they are used.
  675. - Active traps and bypasses mixed in one table. The order in a
  676.   trap is the order in which the bypasses/hooks are used.
  677.  
  678. Another list lists all functions that have not returned from the
  679. call. This is also the contents of the FunctionTable. See chapter
  680. 6.1 and 6.2
  681.  
  682.    3.10 N - Notepad
  683. -------------------
  684. The notepad window offers the possibilty to enter comments into
  685. the protocoll file.
  686.  
  687. The active line is show by the bracets <<..>>. All ASCII characters
  688. are valid key, extra functions are:
  689. - CLR clear all lines
  690. - BS  clear last character, together with shift clear line
  691. - CR  to next line
  692.  
  693. In a protocoll dump only the lines containing characters are listed.
  694. If you want a blank line, you must enter a SPACE.
  695.  
  696.    3.11 W - Write
  697. -----------------
  698. This function save all settings of SysMon into the file SysMon.Inf.
  699. This file is loaded when SysMon starts up. If writing is not
  700. possible, a warning message is output.
  701.  
  702. All settings of the 10 setups are stored. An exception is the status
  703. of the programs. It is possible that at the next start of SysMon
  704. other programs are loaded and active. So SysMon save just a default
  705. state for every group of programs. (TOS, Auto, Acc, Res, Prg, LPrg,
  706. Cart, Unknown)
  707.  
  708. - If no program of a group is selected, 'no trace' is saved.
  709. - If one or more programs of a group are 'traced', 'trace' is
  710.   saved.
  711. - If one or more programs of a group are 'breakpoints', 'breakpoint'
  712.   is saved.
  713. - If there is no progam of a group loaded, 'trace' is saved
  714.  
  715.    3.12 R - ReRead
  716. ------------------
  717. This menu item rereads the SysMon.Inf file. If reading is not
  718. possible or the file does not exist, a warning message is output.
  719.  
  720. All settings of the file are installed.
  721.  
  722.    3.13 Q - Quit
  723. ----------------
  724. This menu item quits SysMon after a question.
  725.  
  726. If you quit SysMon a dialog says whether the SysTable must stay
  727. resident or not. There are 4 kinds of QUIT :
  728. - If there are bypasses, the SysTable must remain in memory,
  729.   because other programs could jump to this bypasses
  730. - If there are no bypasses, but functions that will return to
  731.   the SysTable, the SysTable is not removed. After the last
  732.   function returns, the SysTable is also removed.
  733. - If you QUIT whilst in a GEMDOS call, SysMon must wait until this
  734.   call returns. Thios is the same problem as with the protocoll file
  735.   See chapter 4.3
  736. - If there are no bypasses and no functions in the FunctionTable
  737.   SysMon removes itself totally. You will hear a acustic signal.
  738.  
  739. At the next start SysMon will find a SysTable and use it. If you
  740. leave again, the SysMon memory is totally removed. So there is
  741. only one active SysTable in memory. See chapter 6.1 and 6.2
  742.  
  743.         4. The output of the tracer
  744. ===================================================
  745.  
  746.    4.1 The tracer line
  747. ----------------------
  748. The output of the tracer line is configured with the global
  749. keys ReturnAddr, Caller, Number, Output Stack, FlagSuper. An overview
  750. of the active setting is given in the CONFIGURATIONs window.
  751.  
  752. The start of each line has the following format:
  753. - If a taskswitch occured while tracing AES-calls, a '>' is output
  754. - If ReturnAddr is enabled, the return adress of the call is output.
  755. - If Caller is enabled, the name of the calling program is output.
  756. - If Number is enabled, the function number plus a letter is output.
  757.   The letter stand for the function group, ie 'A' for AES and so on.
  758.   The letter 'O' is used for calls of the GEM-trap, that have another
  759.   index than AES or VDI calls. An examples are the 'vq_gdos' and
  760.   'vq_driver' call.
  761. - If OutputStack is selected, the current stack pointer is output
  762. - If FlagSuper is selceted, a little dot is output if a call was made
  763.   in supervisor mode.
  764.  
  765. After this header the function name is output. If calls interlock,
  766. the function names are indented. An example is if you display the
  767. calls from GEM and TOS. The GEMDOS-function 'Fread' and 'Fopen'
  768. involve an XBIOS call of 'Rwabs'. Or the call of 'v_opnwk' and
  769. 'v_opnvwk' involve calls to the GEMDOS-function malloc.
  770. If an interlocked call returns, the header is repeated so that you can
  771. see the function that is returned.
  772.  
  773. Now the input parameters of the function are output. Values that
  774. are defined as constants in the 'ProfiBuch', are output with names.
  775. If a function has got more than one parameter, short memnonics are
  776. output in front of the value, so that you can identify the values.
  777. The sequence of the parameters corresponds to the sequence in the
  778. function call. If the functions uses 'call by reference' variables,
  779. only the address of this variable is output. The value is output
  780. when the output parameters are written.
  781.  
  782. To emphase that a function returned from the system a '->' is
  783. output. If a function has no return paramters the '->' is
  784. still output to show that the function has returned.
  785.  
  786. If WatchBypass is enabled with the global key ^W and the additional
  787. bypasses were installed at the start of SysMon, the '->' is replaced
  788. with '-[ProgramName]->' if SysMon discovers that the function
  789. was answered by another program and not by the operating system.
  790. A '-{ProgramName}->' means that the program hooked itself after
  791. the call by modifying the return address. See chapter 6.3
  792.  
  793. After the '->' the return parameters are output. The return value
  794. of a function is written after 'Ret'. GEMDOS- and BIOS- functions
  795. output all system error messages in text form.
  796.  
  797. If ExtraOutput is enbled with the global key ^E extra information
  798. is output. This extra information produces lot of output, because
  799. all elements of structures etc. are listed (the longest struct is
  800. the BITBLT struct which produces 4 lines of output...) Also values
  801. are output that are not on the stack, but corespond to the function.
  802. GEMDOS functions that only use a file handle output the file name,
  803. the DTA is listed when calls to 'Fsfirst', 'Fsnext' is made,
  804. the AES functions that deal with objects output the type and string
  805. of the objects in use etc. Extra output is placed in <...> brackets.
  806. See chapter 5
  807.  
  808. If the list of values is longer than a screen line, a wrap and
  809. indent takes place.
  810.  
  811.    4.2 Examples of output
  812. -------------------------
  813. The first example shows an interlocked sequence of calls. The return
  814. value of the outer 'Fsfirst' call is emphase by the repetition
  815. of the header.
  816.  
  817.  $FC38B0 GEM G_78 Fsfirst "C:\C_TEX\*.*" { Dir }
  818.  $FC4F0E TOS B_4   Rwabs  READ Buf $7BC4 Cnt 1 Rec 38 Dev 2 -> Ok
  819.  $FC38B0 GEM G_78 Fsfirst -> Ok <.>
  820.  $FC38B0 GEM G_79 Fsnext  -> Ok <..>
  821.  $FC38B0 GEM G_79 Fsnext  -> NoMoreFiles
  822.  
  823. The trace line in this example consists of ReturnAddr, Caller for the
  824. program name and Number for the function number. ExtraOutput was
  825. disabled, otherwise the 'Fsfirst' and 'Fsnext' call would output
  826. not only the name but also the length date and state of the file.
  827.  
  828. The next example shows which calls are produced by opening the
  829. first VDI workstation when booting the computer. The FlagSuper
  830. option was enabled. So every call that was made in supervisor mode
  831. shows a little * in front of the name
  832.  
  833.  GEM *v_opnwk    H 0 3,1,1,1,1,1,1,1,1,1,2
  834.  TOS  *Getrez    -> High
  835.  TOS  *Setpalet  PAL $FCB39E ->
  836.  TOS  *Setexc    Vec 256($0400) New $FCB3C6  -> Old $FC92C6
  837.  TOS  *Initmouse Mouse On,Relative PARAM $FD0F62 { topmode 0
  838.                  buttons 0 x_scale 1  y_scale 1  } Vec $FD09FA ->
  839.  GEM *v_opnwk    -> H 1 (639,399)
  840.  
  841. As you see, all calls of the desktop are in supervisor mode. The
  842. interlocking of calls is visible through the indentation. Also
  843. a '->' directly behind a function call shows that this function
  844. just returned and that the input parameters are listed before.
  845. If TOS was not selected in the PROGRAMs window, the output
  846. parameters of the 'v_opnwk' call would appear in the same line
  847. as the input parameters.
  848.  
  849. The next example shows a task switch of AES between CONTROL.ACC
  850. and TURBOST.ACC
  851.  
  852.  TURBST16  appl_init
  853.  CONTROL   appl_init
  854. >TURBST16  appl_init      -> 3
  855.  TURBST16  menu_regis.    "  Turbo ST" 3
  856. >CONTROL   appl_init      -> 2
  857.  CONTROL   graf_handle
  858. >TURBST16  menu_regis.    -> 0
  859.  TURBST16  evnt_mesag     $0427A4
  860. >CONTROL   graf_handle    -> (8  ,16 ) (19 ,19 ) Ret 1
  861.  CONTROL   menu_regis.    "  Kontrollfeld" 2  -> 1
  862.  
  863. A '>' shows that another process returned from the trap than the
  864. one who entered the trap. The '->' shows in a simple way what
  865. was the input and what was the output function.
  866.  
  867.  CONTROL  Setprt   { Matrix,Mono,Atari(1280),Draft,Centronics,
  868.                    Endless } -> { Matrix,Mono,Atari(1280),Draft,
  869.                    Centronics,Endless }
  870.  CONTROL  Rsconf   Speed 4  Flow 0  Ucr/Rsr (-1 ,-1 ) Tsr/Scr
  871.                    (-1 ,-1 ) -> Register $000000
  872.  
  873. If a parameter line is longer than a screen line, a wrap and
  874. indent takes place. Bitsets and structs are shown in {...}
  875. brackets.
  876.  
  877. The 'evnt_multi' call has a long and complex parameter list.
  878.  
  879.  CONTROL  evnt_multi  KYBD BUT { 1,1,1 } MSG TIMER  { 30000,0 }
  880.                       Buf $040E00 -> (201,101) B$00 K$00 Key
  881.                       $0000 But $00 Event = MU_MESAG
  882.                       { WM_CLOSED H 4 }
  883.  
  884. As you see the values are easy to read, the secence is the same
  885. seqence like in the c call. This example waits for a keyboard,
  886. button, message or timer event. You can see the parameters of
  887. each selection.  the function returned with some values
  888. for the buttons, keyboard state etc. The recieved event is a
  889. message event that says that the user closed window 4.
  890.  
  891.  GEMINI  Fopen  'C:\GEMINI\MUPFEL.MUP' ReadOnly  -> $000007 /7
  892.  GEMINI  Fseek  H 7 <MUPFEL.MUP> Off 0 FromEnd   -> $000490 /1168
  893.  GEMINI  Fseek  H 7 <MUPFEL.MUP> Off 0 Relative  -> $000490 /1168
  894.  GEMINI  Fseek  H 7 <MUPFEL.MUP> Off 0 FromStart -> Ok
  895.  GEMINI  Fread  H 7 <MUPFEL.MUP> Cnt $000400 Buf $079A48
  896.                     -> $000400 /1024
  897.  GEMINI  Fread  H 7 <MUPFEL.MUP> Cnt $000400 Buf $079A48
  898.                     -> $000090 /144
  899.  GEMINI  Fclose H 7 <MUPFEL.MUP> -> Ok
  900.  
  901. The output of the file name in addition to the file handle is one
  902. of the extra features of SysMon. It is enabled with the ExtraOutput
  903. option and placed in < ... > brackets.
  904.  
  905. Some other examples for extra output:
  906.  
  907.  GEMINI menu_ienab. $0843FA 18 <  Open           ^O> disable -> 1
  908.  GEMINI menu_ienab. $0843FA 19 <  Get Info...    ^I> disable -> 1
  909.  GEMINI menu_ienab. $0843FA 44 <  Application... ^A> disable -> 1
  910.  GEMINI menu_ienab. $0843FA 27 <  Erase Disk...  ^E> disable -> 1
  911.  GEMINI evnt_multi  KYBD BUT { 2,1,1 } MSG Buf $075594 ->
  912.                     (136,454) B$01 K$01 Key $0019 But $01
  913.                     Event = MU_BUTT
  914.  GEMINI wind_find   (136,454) -> 0
  915.  GEMINI objc_find   $078260 (0  ,8  ) (136,454) -> Nr 10
  916.                     < G_ICON "ZOO" > (10 ,136) Ret 10
  917.  
  918. All AES-functions which dial with objects output the name
  919. and string of the object. So you see which menu item was
  920. enabled at the 'menu_ienable' call or you get the name of the
  921. menu item the user selected when a program recieves a
  922. 'MN_SELECTED' message. After the button event, GEMINI tests
  923. with 'objc_find' if an icon on the desktop was hit. The
  924. 'objc_find' call outputs the string of the icon if ExtraOutput
  925. is enabled.
  926.  
  927.  
  928.    4.3 The protocoll file
  929. -------------------------
  930. All output of SysMon can be written into a file. You can enable and
  931. disable this feature in the DISPLAY window.
  932.  
  933. When a MediaChange occurs, all opened files of a drive are closed
  934. automatically. If you want to protocoll the build up of the desktop,
  935. you must select another drive for the protocoll file, because the
  936. pressing of ESC in a desktop window produces a MediaChange and the
  937. contents of the protocoll file would be lost.
  938.  
  939. All BIOS call of the GEMDOS use the same stack, so it is not
  940. possible to call GEMDOS while in a BIOS call. (The GEMDOS call
  941. would make BIOS calls and destroy the old contents of the stack)
  942. This is the reason why sometimes opening and closing of the
  943. protocoll file is not possible and only a warning message is output.
  944.  
  945. The protocoll of BIOS calls is only possible, because SysMon has
  946. an internal puffer. All BIOS calls are written into the puffer and
  947. only written to the file when it is save. You can modify the size
  948. of the puffer in the patch variables. See chapter 8.1. If an
  949. overflow occurs a message is written to the protocoll file.
  950.  
  951. Special features in conjunction with the protocoll file
  952. - You can dump the contents of every window into the protocoll file
  953.   by pressing the * key on the numeric keypad. In this way you can
  954.   write down the state of the system.
  955. - Even the function lists can be dumped, so you can record, which
  956.   functions were selected
  957. - If no window is opened, the global state of SysMon is dumped into
  958.   the file.
  959. - The notepad is a simple editor to insert comments into the
  960.   protocoll file.
  961. - If you save the SysMon setup while a protocoll file is opened
  962.   the file will not be opened at the next start. This would overwrite
  963.   the old protocoll file which is not what you expected.
  964.  
  965.  
  966.         5. Special features
  967. ===================================================
  968.  
  969.    5.1 AES
  970. ----------
  971. The user defined messages from the programs GEMINI, CLIPBRD, CAD-3D,
  972. DEGAS, CYBERSMASH, TDI_MODULA and the XACC- and IDC -protocoll
  973. messages are known and output.
  974. The 'extra-output' includes the output of the object type and the
  975. string of an object, when using objc_xxxx or menu_xxxx functions.
  976.  
  977.    5.2 VDI
  978. ----------
  979. All extended VDI-Metafile Escapes and the MFDB stuct are output.
  980. You cannot STEP-trace the functions 'vex_timer', 'vex_button' and
  981. 'vex_mouse'.
  982.  
  983. The functions 'vq_gdos' and 'vq_driver' are no real DVI-functions,
  984. because they use another stack convention. The mode for these
  985. funtions is selected through the 'Unknown'-function in the VDI-
  986. function list.
  987.  
  988.    5.3 GEMDOS
  989. -------------
  990. All network-functions are known and output with parameters. The
  991. 'extra-output' include the DTA structure at 'Fsfirst', 'Fsnext'
  992. calls, the real file name at every call with file-handles, the
  993. previous block size at 'Mfree' and 'Mshrink' und the structs
  994. DISKINFO and DOSINFO. The new TT-function 'mxalloc' is also
  995. supported.
  996.  
  997. Under Color-OverScan the screen toggles (for a short time) to the GEM
  998. screen, when the function  'Pterm0', 'Pterm' or 'Ptermres' are
  999. called.
  1000.  
  1001.    5.4 BIOS
  1002. -----------
  1003. The functions 'Setexc' and 'Ticcal' are not traced in STEP-mode.
  1004. The BPB struct is shown when 'extra output' is active.
  1005.  
  1006.    5.5 XBIOS
  1007. ------------
  1008. The function 'Floprate', every TT function and the OverScan XBIOS-
  1009. extension is supported.
  1010. The structs PARAM, IOREC, KEYTABLE, KBDVECS and PBDEF are listed
  1011. when 'extra-output' is active.
  1012.  
  1013. If the functions 'Physbase', 'Getrez' or 'Setscreen' are called when
  1014. the SysMon screen is show, ist is necessary to toggle to the GEM
  1015. screen and back to the SysMon screen.
  1016.  
  1017.    5.6 LINE_A
  1018. -------------
  1019. All variables corresponding to a function are output. The structs
  1020. MFORM, SDB and BITBLT are output, when 'extra-output' is active.
  1021.  
  1022.    5.7 Setup-dependent tracing
  1023. ------------------------------
  1024. The setup dependent tracing is archived with the modes 0..9 in the
  1025. function lists. This modes are independent from programs that are
  1026. selected in the programs window. A function is output, if the calling
  1027. program is selected in the setup with the mode number.
  1028.  
  1029. Because this is a little complicated, here an example:
  1030.   You want to trace VDI, not only the calls of your program, but
  1031.   also the calls of the SCRNMGR through the AES.
  1032.   Some VDi calls appear quite often and have no value for you.
  1033.       'vq_mouse','vrq_string' etc..
  1034.   You don't want to see them, but if a program call them you
  1035.   want to see them.
  1036.   If you deselect the function in the function menu, they don't
  1037.   appear any more, even if a normal programm calls them. This is
  1038.   not what you wanted.
  1039. For this problem setup dependent tracing is the solution.
  1040.   The active setup is '1', all programs and GEM are selected.
  1041.   In setup '2' all programs are selected, but GEM is not
  1042.   selected.
  1043.   If you choose the mode '2' for the annoying functions
  1044.     'vq_mouse','vrq_string', etc...
  1045.   these functions are only show, if the call came for a
  1046.   program that is selcted in setup '2'.
  1047.   Thus GEM is not selected in setup '2' call of these
  1048.   functions is not listed, when the SCRNMGR makes them,
  1049.   but they are listed if a program calls them. All other
  1050.   functions of the SCRNMGR are listed.
  1051.  
  1052.  
  1053.         6. The traps
  1054. ===================================================
  1055.  
  1056.    6.1 SysMon traps
  1057. -------------------
  1058. If SysMon is disabled, it hooks only in the keyboard-, VBL- and
  1059. GEMDOS-vector.
  1060. If SysMon is enabled, also the AES/VDI, BIOS, XBIOS and LINE_A
  1061. vectors are hooked to SysMon. All traps watch the other traps,
  1062. if a trap changes a bypass is build.
  1063.  
  1064. SysMon is always the first hook in the trap, because this is the
  1065. only way that no function is stolen from other programs. It is hard
  1066. to believe that another prorgam can deinstall SysMon from the traps,
  1067. all traps must change in the same time, otherwise SysMon rehook
  1068. itself.
  1069.  
  1070. The GEMDOS-vector is watched even if SysMon is disabled, in order
  1071. to know when programs start/end.
  1072.  
  1073. With a little trick, the successor of a call doesn't realise that
  1074. the return address of a program has changed. This is needed for some
  1075. programs (STUFFER, ICONDESK...)
  1076.  
  1077.    6.2 The SysTable
  1078. -------------------
  1079. The SysTable is an independant part of SysMon. It resides at the
  1080. start of the SysMon program and consists of the BypassTable, the
  1081. FunctionTable and the functions to manage these tables.
  1082.  
  1083. If Sysmon quits, this part remains in memory if there are bypasses
  1084. or some functions have not returned yet. The SysTable unhooks this
  1085. functions if they return and removes itself from memory it is no
  1086. longer needed.
  1087.  
  1088. If SysMon is started and finds a SysTable, it uses this SysTable.
  1089. All actions associated with the traps, the redirection of functions
  1090. and the quitting of SysMon are managed by the SysTable. In this way
  1091. there is only one active SysTable in memory. If you start SysMon
  1092. repeatedly no new BypassTable or FunctionTable is needed and SysMon
  1093. can be totaly removed from memory.
  1094.  
  1095. if another program hooks into a trap SysMon build a bypass in the
  1096. BypassTable and rehooks to the first position in the trap. If the
  1097. program rehooks the trap to the old value, the bypass is freed.
  1098. The BypassTable is only scanned at the start of SysMon, unused
  1099. bypasses (pointing to free memory...) are removed.
  1100.  
  1101. The FunctionsTable is needed, because the ST has not only one
  1102. process at a time. All running processes can make system calls
  1103. and so they must be managed seperatly. SysMon not only lists
  1104. the input parameters of a function. This means SysMon must hook
  1105. into each call and output the returned values after the function.
  1106. Not all calls terminate immediately after they are called. A good
  1107. example is the 'Pexec' call. Sysmon does not wait until the
  1108. pexec has terminated. It outpus the input parameters and puts the
  1109. call into the FunctionTable. Now the next functions produces
  1110. output. Later if the 'Pexec' returns to the SysTable, SysMon restores
  1111. the correct return address from the FunctionTable and clears the
  1112. functions in the table. Other good examples are the AES-calls. The
  1113. limited multitasking of the ST means that another call return form
  1114. the GEM-trap than the one who entered it.
  1115.  
  1116. SysMon manages all traps in its internal stacks. Hence all calls from
  1117. interrupts and VBLs , RTX and other MultiTasking extensions are no
  1118. problem to SysMon. Interlocking calls of different processes are
  1119. managed. Here is an extreme example, that you can see with an old
  1120. TEMPLEMON (resident debugger).
  1121.  
  1122. A GEM program makes a 'evnt_multi' cal. This call makes a 'vrq_string'
  1123. from the SCRNMGR, the 'vrq_string' makes a `Bconstat' to get the state
  1124. of the keyboard. If you press a key, you can see that TEMPLEMON,
  1125. which resides in the keyboard-vector calls 'Iorec', and then the
  1126. interlocking breaks up...
  1127.  
  1128. The SysTable manages these stacks seperatly, so that SysMon can
  1129. quit at every time.
  1130.  
  1131. You can view the state of the BypassTable and FunctionTable in the
  1132. UsedTraps window.
  1133.  
  1134.    6.3 Extended bypass functions
  1135. --------------------------------
  1136. In the CONFIGURATION-window you can set the Flag WatchBypass. If this
  1137. flag is set, an extended test is done in every bypass. SysMon can
  1138. test, which program answered a call, or which program stole a
  1139. call or made direct call without going through the trap. Such
  1140. tricks are commonly used, examples are  GDOS.PRG, SHELL.ACC,
  1141. TURBOST.ACC, OVERSCAN.PRG, STUFFER.ACC and all ST networks.
  1142.  
  1143.    The WatchBypass function works only if SysMon is started before
  1144.    the other programs and if the WatchBypass-Flag is set while the
  1145.    setup is saved!
  1146.  
  1147. If the flag is set at the start of SysMon, SysMon tries to insert
  1148. bypasses between every program that hooks into the traps. This
  1149. works only if the programs follows the XBRA-convention, otherwise
  1150. the jump adress of a program can not be modified.
  1151.  
  1152. The inserted bypasses build up platforms, if entered SysMon analyses
  1153. the incomming call:
  1154. - SysMon stores the last used bypass for each trap. If a call does
  1155.   not enter the system, SysMon can say which program answered the call
  1156. - SysMon can say when other programs modify the return adress of
  1157.   a call. (Hooked in after a call)
  1158. - SysMon watches for the function number. By this, SysMon detects
  1159.   calls that were just put onto the stack and did not come from
  1160.   the trap.
  1161.  
  1162. If tracing is disabled, the bypass tests are not activated and
  1163. consume no time and processor power.
  1164.  
  1165.    6.2 The SysTable
  1166.    6.3 Extended bypass functions
  1167.    6.4 PD- and Trap-changes
  1168. ----------------------------
  1169. The change of the active process and modifications of the SysMon traps
  1170. are displayed if enabled with the global keys ^P for PD-change and
  1171. ^T for TrapChange. If ouput is disabled or SysMon is disabled, the
  1172. tests occur silently.
  1173.  
  1174.  
  1175.         7. Sample sessions
  1176. ===================================================
  1177.  
  1178.   7.1 Stepwise booting
  1179. ----------------------
  1180. (No yet written...) All needed settings are told (SysMon in first
  1181. place in the auto-folder, first boot and make settings: Step-Mode,
  1182. tracing enabled, all programs selected,all function groups, all
  1183. functions selected, extra output, PD-/Trap-change, now save
  1184. settings and reboot) The programs in this example should be
  1185. TOS14FIX, TEMPLEMON, GDOS, CONTROL.ACC and TURBOST.ACC.
  1186. The example should show that it is the harddisk driver that loads
  1187. in the auto-folder programs and then starts the GEM. You can see
  1188. that the GEM-trap is restored after every resident program. When
  1189. GEM is started, you see how the first VDI workstation is opened
  1190. and the AES taskswitching. TURBOST is a program that installs
  1191. itself in some traps.
  1192.  
  1193.  
  1194.    7.2 Tracing of a single AES-call
  1195. -----------------------------------
  1196. (Not yet written...) This example should show, which functions
  1197. are made by a 'form_alert' call.
  1198.  
  1199.  
  1200.    7.3 Tracing of a DA-protocoll
  1201. --------------------------------
  1202. This session shows a simple DA-protocoll between the GEMINI-shell
  1203. and the CLIPBRD.ACC. In GEMINI the CLIPBRD should be installed
  1204. as default application for all files.
  1205.  
  1206. SysMon is set up the following way:
  1207.  
  1208. SysMon must starts in the auto folder of the boot disk, if you want
  1209. to see start of the DA.
  1210.  
  1211. In the CONFIGURATION window , the setup is given a name, with the
  1212. TAB-key select the HALT mode, with the global keys ^A,^V and ^G
  1213. the function groups AES, VDI and GEMDOS are selected. PD- and
  1214. Trap-Changes are selected with ^T and ^P.
  1215.  
  1216. In the PROGRAMS window GEMINI and CLIPBRD are selected with the INSERT
  1217. key. all other programs should be deselected.
  1218.  
  1219. In the SYSMOn-menu tracing is enabled with the ESC key. This setting
  1220. is saved with 'Write setup'.
  1221.  
  1222. At the next reboot SysMon stops at first call of a DA. Now deselect
  1223. the other DAs. Continue in STEP or RUN mode.
  1224.  
  1225.  CLIPBRD Mshrink     $03EEC8 < Size $015E10/89616 > NewSize
  1226.                      89616 -> Ok
  1227.  CLIPBRD appl_init
  1228.  CLIPBRD appl_init   -> 3
  1229.  CLIPBRD graf_handle -> (8  ,16 ) (19 ,19 ) Ret 1
  1230.  CLIPBRD wind_get    H 0 WORK  -> (0  ,19 ) (640,381)
  1231.  CLIPBRD Dgetdrv     -> Drive C
  1232.  CLIPBRD Dgetpath    Buf $054BCC Drv 0 (active) -> ""
  1233.  CLIPBRD shel_read   -> "CLIPBRD.ACC"    ""
  1234.  CLIPBRD menu_regis. "  GEM-Clipboard" 3 -> 1
  1235.  CLIPBRD scrp_read   $04F3BE -> ""
  1236.  CLIPBRD Dsetdrv     $0002 C -> Drives ABCDEF
  1237.  CLIPBRD scrp_write  "C:\CLIPBRD\" -> 1
  1238.  ...
  1239.  CLIPBRD evnt_multi  KYBD BUT { 2,1,1 } MSG Buf $054CA0
  1240.  
  1241. The CLIPBRD uses the function 'scrp_read' to get the path to the
  1242. CLIPBRD directory. If the path is not set, it is set by the DA.
  1243. With 'Fsfirst' the CLIPBRD tests, whether the desired path exists.
  1244. If not CLIPBRD makes a new directory.
  1245.  
  1246.  ...
  1247.  GEMINI  scrp_read   $0903F8 -> "C:\CLIPBRD\"
  1248.  ...
  1249.  
  1250. The GEMINI shell also uses 'scrp_read' and 'scrp_write' to
  1251. set up the path to the CLIPBRD directory.
  1252.  
  1253.  GEMINI  evnt_multi  KYBD BUT { 2,1,1 } MSG Buf $090418 ->
  1254.                      (132,120) B$01 K$01 Key $0000 But $02 Event
  1255.                      = MU_BUTT
  1256.  GEMINI  wind_find   (132,120) -> 2
  1257.  GEMINI  objc_find   $0A2500 (0  ,8  ) (132,120) -> Nr 8  < G_ICON
  1258.                      "SOWTW.TXT" > (8  ,132) Ret 8
  1259.  GEMINI  objc_offset $0A2500 8  < G_ICON "SOWTW.TXT" > ->
  1260.                      (1  ,82 ) Ret 1
  1261.  ...
  1262.  GEMINI  appl_find   "CLIPBRD " -> 3
  1263.  GEMINI  wind_update BEG_UPDATE -> 1
  1264.  ...
  1265.  GEMINI  graf_growb. (82 ,104) (78 ,40 ) (0  ,19 ) (640,381) -> 1
  1266.  GEMINI  appl_write  ID 3 Cnt 16 $090194 { GEMINI : "E:\SOWTW.TXT"
  1267.                      } -> 1
  1268.  GEMINI  wind_update END_UPDATE -> 1
  1269.  
  1270. If you doubleclick onto a file in GEMINI, the application for this
  1271. file is started. In this case this is the CLIPBRD.ACC. GEMINI
  1272. searches with 'appl_find' for the DA. If installed, GEMINI sends
  1273. a GEMINI-message with 'appl_write' to the DA.
  1274.  
  1275. >CLIPBRD evnt_multi  -> (132,120) B$00 K$01 Key $0013 But $00
  1276.                      Event =  MU_MESAG { GEMINI : "E:\SOWTW.TXT" }
  1277.  CLIPBRD graf_mkstat -> (134,119) But $00 Key $0001
  1278.  CLIPBRD wind_update BEG_UPDATE -> 1
  1279.  ...
  1280.  CLIPBRD Fopen       "E:\SOWTW.TXT" ReadOnly  -> $000007 /7
  1281.  CLIPBRD Fseek       H 7 <SOWTW.TXT> Off 0    FromEnd   ->
  1282.                      $00076E / 1902
  1283.  CLIPBRD Malloc      $00076E -> $0A3746
  1284.  CLIPBRD Fseek       H 7 <SOWTW.TXT> Off 0    FromStart -> Ok
  1285.  CLIPBRD Fread       H 7 <SOWTW.TXT> Cnt $00076E Buf $0A3746 ->
  1286.                      $00076E / 1902
  1287.  CLIPBRD Fclose      H 7 <SOWTW.TXT> -> Ok
  1288.  ...
  1289.  CLIPBRD wind_create { NAME CLOSE FULL MOVE INFO SIZE UPAR DNAR
  1290.                      VSLIDE LFAR RTAR HSLIDE } (0  ,19 ) (640,381)
  1291.                      -> 3
  1292.  ...
  1293.  CLIPBRD wind_open   H 3 (7  ,91 ) (580,216) -> 1
  1294.  CLIPBRD appl_write  ID 0 Cnt 16 $054BC8 { SCRP_OK } -> 1
  1295.  ...
  1296.  CLIPBRD wind_update END_UPDATE -> 1
  1297.  
  1298. The CLIPBRD recieves the message and understands what to do. It opens
  1299. a window and displays the file. An answer message (SCRP_OK) is send to
  1300. GEMINI.
  1301. One couriosity is that in the docs to CLIPBRD only the SCRP_xxx messages
  1302. are listed and not the GEMINI message! If you send a "" string, only
  1303. the main window of the CLIPBRD is opened.
  1304.  
  1305.  
  1306.    7.4 Tracing of a program
  1307. ---------------------------
  1308. This session shows how the MultiDA STUFFER loads other DAs and how
  1309. it manages them.
  1310.  
  1311. In the CONFIGURATION window the setup '3' is set up as followed:
  1312. AES,VDI, GEMDOS, BIOS etc on, STEP mode, TrapChanges an. Get the
  1313. traps with ESC and select STUFFER in the PROGRAMs window. Now save
  1314. and reboot.
  1315.  
  1316. After the standard 'app_init' and 'menu_register' STUFFER waits
  1317. for the desktop to come up. This is done with several calls
  1318. to 'wind_update(BEG/END)'. After that the dialogbox is drawn
  1319. an the GEMDOS path is set to the STUFFER directory. With 'Fsfirst'
  1320. and 'Fsnext' all *.ACC are found. Now STUFFER hooks into the
  1321. GEM and BIOS trap.
  1322.  
  1323.  STUFFER Malloc    $FFFFFF -> $098E50
  1324.  STUFFER Kbshift   Mode -1 ->  NoState
  1325.  STUFFER Cconws    "ADDRESS.ACC" -> Cnt 26
  1326.  STUFFER Pexec     Load "C:\STUFFER\ADDRESS.ACC" "" -> $05F1B4
  1327.  STUFFER Mshrink   $05F1B4 < Size $098E4C/626252 > NewSize 54204
  1328.                    -> Ok
  1329.  ADDRESS appl_init
  1330. >ADDRESS appl_init -> 2
  1331.  
  1332. The name of a DA is not written into the dialogbox, but written
  1333. with 'Cconws'. This is the reason, why it doesn't work on big
  1334. screens or under OverScan. The position of the dialogbox is not
  1335. the same than in standard resolution.
  1336.  
  1337. With 'Pexec(Load)' the DA is loaded an with 'Mshrink' the memory
  1338. is sized to the amount, the DA needs. The the DA is started. For
  1339. GEM no process change occured, so 'appl_init' returns the same
  1340. ID as for STUFFER.
  1341.  
  1342.  ADDRESS menu_regis. "  STreet finder" 2  -[STUFFER]-> 1
  1343.  ADDRESS evnt_multi  MSG Buf $06C264
  1344.  STUFFER  Cconws     "\escH\escY->" -> Cnt 79
  1345.  STUFFER  Cconws     "            " -> Cnt 26
  1346.  STUFFER  Cconws     "            " -> Cnt 26
  1347.  STUFFER  Cconws     "\escH\escY->" -> Cnt 79
  1348.  STUFFER  Malloc     $FFFFFF -> $08B95C
  1349.  STUFFER  Kbshift    Mode -1 ->  NoState
  1350.  STUFFER  Cconws     "CALNDR.ACC" -> Cnt 26
  1351.  STUFFER  Pexec      Load "C:\STUFFER\CLOCK.ACC" "" -> $06C6A8
  1352.  STUFFER  Mshrink    $06C6A8 < Size $08B958/571736 > NewSize 9880
  1353.                      -> Ok
  1354.  CLOCK   appl_init
  1355. >CLOCK   appl_init   -> 2
  1356.  
  1357. STUFFER stole the 'menu_register' call and save the text internaly.
  1358. After each call to an 'Event_' function, STUFFER is reactivated. It
  1359. now loads the other DAs until there is no more DA or the memory is
  1360. exhausted or you hold down the right shift key.
  1361.  
  1362. If you select the STUFFER menu item, STUFFER draws its dialogbox
  1363. and wait for a button press.
  1364.  
  1365.  STUFFER  wind_update END_UPDATE -> 1
  1366.  STUFFER  v_clsvwk    H 5  ->
  1367.  STUFFER  Super       $000000 -> $008660
  1368.  CLOCK   evnt_multi  -[STUFFER]-> (41 ,89 ) B$00 K$00 Key $0000
  1369.                       But $00 Event = MU_MESAG { AC_OPEN 4 }
  1370.  CLOCK   wind_update BEG_UPDATE -> 1
  1371.  ...
  1372.  CLOCK   wind_update END_UPDATE -> 1
  1373.  CLOCK   evnt_multi  KYBD MSG TIMER  { 1000,0 } Buf $075A8E
  1374.  STUFFER evnt_multi  KYBD MSG TIMER  { 1000,0 } Buf $03D400 ->
  1375.                       (57 ,110) B $00 K$00 Key $00FD But $58
  1376.                      Event = MU_MESAG { WM_REDRAW H 4 (99 ,31 )
  1377.                      (80 ,119) }
  1378.  STUFFER  Super       $000000 -> $008660
  1379.  ADDRESS evnt_multi  -[STUFFER]-> (57 ,110) B$00 K$00 Key $00FD
  1380.                      But $58 Event = MU_MESAG { WM_REDRAW H 4
  1381.                      (99 ,31 ) (80 ,119) }
  1382.  ADDRESS wind_update BEG_UPDATE -> 1
  1383.  ...
  1384.  ADDRESS wind_update END_UPDATE -> 1
  1385.  ADDRESS evnt_multi  KYBD MSG TIMER  { 10000,0 } Buf $06E938
  1386.  STUFFER evnt_multi  KYBD MSG TIMER  { 1000,0 } Buf $03D400 ->
  1387.                      (57 ,110) B $00 K$00 Key $0000 But $00
  1388.                      Event = MU_MESAG { WM_REDRAW H 5 (99 ,31 )
  1389.                      (92 ,59 ) }
  1390.  ...
  1391.  CLOCK   evnt_multi  -[STUFFER]-> (57 ,110) B$00 K$00 Key $0000
  1392.                      But $00 Event = MU_MESAG { WM_REDRAW H 5
  1393.                       (99 ,31 ) (92 ,59 ) }
  1394.  CLOCK   wind_update BEG_UPDATE -> 1
  1395.  ...
  1396.  
  1397. All DAs run in alternate turns, a task switching occurs at
  1398. every 'Event' call. STUFFER combines the 'Event' calls and sends
  1399. 'Timer' and 'KBD' to all DAs that selected 'Timer/KBD' events.
  1400. If there is an DA that does very short timer events, all DAs get
  1401. this high rate of timer events.
  1402. STUFFER saves which window belongs to which DA, so 'Window'-
  1403. messages are send only to the DA that openend the window.
  1404.  
  1405. For GEM everything looks as if only one DA is loaded, all DAs have
  1406. the same ID. STUFFER is the owner of all windows, the sub-DAs opened.
  1407. STUFFER reducts the GEM taskswitch by another layer.
  1408.  
  1409.  
  1410.    7.5 Detect errors/mysteries in the system
  1411. ------------------------------------------
  1412. (Not yet written...) Some mysteries and unknown errors of the
  1413. system are shown in this session.
  1414.  
  1415. After each program the desktop frees memory that does not belong
  1416. to it. The adress in the 'Mfree' calls is not valid. GEMDOS returns
  1417. a 'BadBlockAddres' error.
  1418.  
  1419. Another error in conjunction with the VDI workstations is shown.
  1420. This error occurs if you close a workstation that is not at the
  1421. end of the internal VDI list. All VDI workstations that are opened
  1422. afterwards get the same ID. This error can be produced very simple
  1423. with 2 or 3 CONTROL.ACCs. (BTW, i have written a patch for that: VdiFix)
  1424.  
  1425. When do you think a DA gets the 'AC_CLOSE' message ?  If you start
  1426. a TOS program, the messages are send by the SCRNMGR, when the desktop
  1427. builds up again, _after_ the TOS program.
  1428.  
  1429. Another mysterie is with the desktop is the '\\X' file, GEM searches
  1430. if you press ESC in a desktop window. This is a simple HACK that
  1431. forces BIOS to rescan the directories up to the end and so actualise
  1432. the internal tables.
  1433.  
  1434.  
  1435.         8. Extended information
  1436. ===================================================
  1437.  
  1438.    8.1 Patch variables
  1439. ----------------------
  1440. Like in TEMPLEMON, OVERSCAN, CHMELEON, the SysMon has got some
  1441. patch variables to fit the users need. These are changed with a disk
  1442. monitor. At the start of SysMon.Prg you find the string 'SysMon_Var'.
  1443. This marks the start of the patch variables, which are listed in
  1444. table -6-
  1445.  
  1446.     length| value | kind        |           | remark
  1447.    -------+-------+-------------+-----------+--------------------------
  1448.     Byte  | 98    | Scan  code  | HELP      | SysMon call
  1449.     Byte  | 1     | Shift state | ri.shift  | SysMon call
  1450.     Byte  | 8     | Shift state | alternate | Abort installation
  1451.     Byte  | 4     | Shift state | control   | Don't load Sys_Mon.Inf
  1452.     Byte  | 0     | Flag        | white     | Menu color
  1453.     Byte  | 1     | Flag        | block     | background color
  1454.     Long  | 10000 |             |           | length of file buffer
  1455.     Long  | 0     |             |           | Offset logbase
  1456.     Long  | 0     |             |           | Offset physbase
  1457.     Word  | 50    | Numb. Lines |           | Trace-buffer
  1458.     Byte  | 102   | Scan  code  | block *   | window dump to protofile
  1459.     Byte  | 0     | Flag        |           | external keyboard
  1460.     
  1461.                 table -6- Patch variables
  1462.  
  1463. If you modify the shift state for abort installation to zero,
  1464. SysMon will only be installed if you press shift,control or alternate
  1465. at the start of SysMon.
  1466. The logbase and physbase offsets are for the older versions of
  1467. OverScan ( <1.7)
  1468.  
  1469.  
  1470.    8.2 Auto patch sequence
  1471. --------------------------
  1472.  
  1473. SysMon depends on some undocumented system variables. These are known
  1474. for all TOS-versions listed in table -1-. If SysMon is started under
  1475. a new TOS version, SysMon tries to locate the system variables.
  1476.  
  1477. - ActPD    Pointer to the active process
  1478. - MBP      Base of the memory lists
  1479. - AesBase  Base of the 3 AES blocks
  1480. - AesList  Pointerlist to the other AES blocks
  1481. - VdiList  Basepointer to the first VDI workstation
  1482.  
  1483. To find the last three Variables, a minimum of 3 AES blocks and
  1484. VDI blocks have to be loaded. You can archive this by copying
  1485. the ATARI CONTROl.ACC 3 times to your boot disk. Then boot the system
  1486. and open all three control panels. Now start Sysmon.
  1487.  
  1488. After SysMon has found all adresses, Sysmon patches itself. If started
  1489. again, no auto-patch sequence is needed.
  1490.  
  1491.    8.3 Special adaptions
  1492. ------------------------
  1493.  
  1494.    8.3.1 Color screens
  1495.    -------------------
  1496.  
  1497.  On color screens the SysMon screen is always in medium resolution.
  1498.  When SysMon toggles to the other screen, the correct resolution is
  1499.  selected.
  1500.  
  1501.     8.3.2 Big screens
  1502.    -----------------
  1503.  If you use SysMon with a big screen,the SysMon output occurs on the
  1504.  SM124. The driver of the MATRIX-monitors uses own VDI-workstation
  1505.  tables, so SysMon cannout output the information in this tables.
  1506.  
  1507.  
  1508.    8.3.3 OverScan
  1509.    --------------
  1510.  With OverScan or the new AutoSwitch-OverScan SysMon uses the resolution
  1511.  that was active when SysMon was started. The additional lines are
  1512.  used if SysMon is started after the OverScan-driver.
  1513.  
  1514.    8.3.4 STE
  1515.    ---------
  1516.  The STE has additional shifter registers, which allow to scroll the
  1517.  screen bytewise. These registers are saved before switch the screen
  1518.  and restored when SysMon switches back to the STE screen.
  1519.  
  1520.    8.3.5 TT
  1521.    --------
  1522.  The new shifter registers of the TT are supported. On The TT SysMon
  1523.  uses the ST-high resolution on its own screen independed of the TT
  1524.  resolution.
  1525.  
  1526.    8.3.6 68000-68030
  1527.    -----------------
  1528.  The stack layout of the various 680xx processors is supported. If
  1529.  SysMon runs on a TT, als vectors are seen 32 bit clean, on the other
  1530.  machines only the lower 24 bits of a vectors are used.
  1531.  
  1532.    8.3.7 External keyboards
  1533.    ------------------------
  1534.  SysMon does not use BIOS functions to test for right shift HELP. This
  1535.  test is done in the keyboard interrupt. If you work with an external
  1536.  PC-keyboard which does not produce keyboard interrupts (You must boot
  1537.  a special keyboard-driver to use the keyboard), SysMon does not get the
  1538.  right shift HELP keypress. 
  1539.  If you set the 'external keyboard' patch variable to 1, SysMon will do
  1540.  a test for ALT-right shift-HELP. (right shift-HARDCOPY). A change of
  1541.  the 'SysMon call' scan-code in the patch variables will not affect
  1542.  this test. If you change the 'SysMon call' shift state, you must press
  1543.  ALT-HELP plus the selected shift state.
  1544.  
  1545.  
  1546.    8.4 Interna
  1547. --------------
  1548. - How SysMon detects programs that are loaded before SysMon:
  1549.   The whole memory is scanned for basepages, programheader etc.
  1550.   This scan is balanced with the MAL and MFL and a list of
  1551.   resident memory blocks is built up.
  1552.   Every memory block is scanned, whether a system vector points
  1553.   into it, and there is a extra routine for harddisk drivers
  1554. - The output- and scroll-routines are compiled after the start of
  1555.   Sysmon. So the scrolling/display rate is very high.
  1556. - The way of a single function call. Everything must go through 
  1557.   the SysTable, because this is the only way, in which SysMon
  1558.   can hook out of the vectors:
  1559.   - First the real trap jumps to the BypassTable
  1560.   - For there it jumps to the routine that computes whether the function
  1561.     produces output or not.
  1562.   - If not traced, the function jumps to the BypassTable and up the
  1563.     way through the traps without interfierence.
  1564.   - If traced, the input parameters are listed
  1565.   - The old return adress etc are put onto the FunctionStack and the
  1566.     return adress on the stack is modified.
  1567.   - Now the functions jumps up the old way throug the traps, reaches
  1568.     the system and returns.
  1569.   - If other programs have hooked into the traps and SysMon build up
  1570.     a bypass, the program jumps to there bypass and from  there to
  1571.     the next station.
  1572.   - Until the function returns to SysMon, other functions could have
  1573.     entered SysMon etc. This does not matter, because of the
  1574.     FunctionStack.
  1575.   - The function returns to the SysTable, there the functions stack is
  1576.     cleared.
  1577.   - If SysMon is present (not hooked out of the traps) the output
  1578.     parameters are listed.
  1579.   - If the user wanted to enter SysMon, the SysMon menu is entered
  1580.   - Then the SysTable restores the returnadress and jumps to the
  1581.     caller.
  1582.   SysMon doesnt modify any register, even the CCR is preserved.
  1583.  
  1584.   A little trick in the aes-trap make every other program think
  1585.   that th return address was not modified! This patch was needed,
  1586.   because lots of programs test whether a call came from the
  1587.   system or form another program (STUFFER,ICONDESK...)
  1588. - The source code of SysMon reached 27000 lines with 420 K bytes.
  1589.  
  1590.    8.5 Bugs / Features
  1591. ----------------------
  1592. Sometimes loaded progams are not recognised, this effect come often
  1593. with MODULA Shells that do 'LoadTime' linking. SysMon detects the
  1594. change of the ActPD, but the calls come from the runtime library
  1595. of the modula shell and not from the code of the program.
  1596.  
  1597.    8.6 Extensions
  1598. -----------------
  1599. - I have implemented a menu for MicroRTX form Beckemeyer development.
  1600.   Because noone asked me to include it, it is hidden in this
  1601.   version of SysMon.
  1602.  
  1603.  
  1604.         9. Shareware conditions
  1605. ===================================================
  1606. If the following files
  1607.  
  1608.    README,  SYS_MON.PRG and SYS_MON.TXT
  1609.  
  1610. are copied without change,  private users are allowed to give
  1611. SysMon to other users. Commercial revenue in every form is
  1612. NOT ALLOWED. This includes public-domain-discs or similar things.
  1613.  
  1614. You can give SysMon to your friend, even upload it into
  1615. mailbox system. All files on this disc should be compressed to
  1616. an archive (ARC, LH-ARC or ZOO).
  1617.  
  1618. You get the actual version if you send a 3.5" disc and an envelop
  1619. with stamps to my address. I work on it nearly every week.
  1620.  
  1621. The development of SysMon had cost 2 years, this is the reason why
  1622. it is not for free.
  1623.  
  1624. SysMon is a very complex product that requires lot of knowledge
  1625. by the user. So i decided to use the concept of ShareWare, which
  1626. means that you can copy SysMon and test if it fits your needs.
  1627. If you use SysMon you must pay for it, as you must pay for
  1628. a professional product. The ShareWare fee is $40.
  1629.  
  1630. If SysMon is used in professional environments, the higher ShareWare
  1631. fee of $80 is necaassary. For this $80 you get an automatic update
  1632. service and a bill, so that you can deduct it from your tax.
  1633.  
  1634. My bank is:
  1635.  
  1636.   Karsten Isakovic
  1637.   Sparkasse der Stadt Berlin
  1638.   Kto: 0950128864
  1639.   Blz: 10050000
  1640.   Germany
  1641.  
  1642. Please note down you name and address in the comment field otherwise
  1643. i can not get in contact with you.
  1644.  
  1645.  I take no responsibility for any direct or indirect damage -
  1646.  including (but not restricted to) material and financial damage -
  1647.  that result of the use of SysMon or the unfit of SysMon for a
  1648.  desired purpose.
  1649.  
  1650.  
  1651.         10. Contact
  1652. ===================================================
  1653. You can reach me on the following ways
  1654.  
  1655.    10.1 Via snail mail
  1656. ----------------------
  1657.  Karsten Isakovic
  1658.  WilmersdorferStr. 82
  1659.  D-1000 Berlin 12
  1660.  Germany
  1661.  
  1662.  
  1663.    10.2 Via electronic mail
  1664. ---------------------------
  1665.  Sub  net:    ki@opal.cs.tu-berlin.de
  1666.  Fido net:    K.I. % MAUS STA @ 2:242/2.6
  1667.  Maus net:    Karsten Isakovic @ STA
  1668.  
  1669.  
  1670.